package cn.tedu.ivos.base.util;

import java.security.SecureRandom;

/**
 * 密码工具类，用于生成随机密码
 */
public class PasswordUtil {
    // 定义允许使用的字符集：大小写字母 + 数字
    private static final String ALLOWED_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    // 使用安全的随机数生成器 SecureRandom 提高安全性
    private static final SecureRandom random = new SecureRandom();

    /**
     * 生成指定长度的随机密码
     *
     * @param length 期望生成的密码长度
     * @return 随机生成的密码字符串
     * @throws IllegalArgumentException 如果密码长度小于5，抛出异常
     */
    public static String generateRandomPassword(int length) {
        if (length < 5) throw new IllegalArgumentException("密码长度不能小于5");

        StringBuilder password = new StringBuilder();

        for (int i = 0; i < length; i++) {
            // 从允许的字符集中随机选取一个字符
            // 生成一个在 ALLOWED_CHARACTERS 范围内的随机索引
            int index = random.nextInt(ALLOWED_CHARACTERS.length());
            // 根据随机索引获取对应的字符
            char randomChar = ALLOWED_CHARACTERS.charAt(index);
            // 将随机字符添加到密码构建器中
            password.append(randomChar);
        }

        return password.toString();
    }
}
